#include <bits/stdc++.h>
typedef long long ll;
ll mod;
ll _power(ll a, int b) //计算a^b;
{
    ll ans = 1, res = a; //res即底数
                         //以2^13为例
                         //13,它的二进制为1101
                         //对应权值为
                         //1 1 0 1
                         //8 4 2 1
                         //而8+4+1=13
                         //故2^13= 2^8 * 2^4 * 2^1
    while (b)
    {
        if (b & 1)
            ans = ans * res % mod; //13的二进制为1101,1的二进制为0001,13&1(按位)的结果为0001
                                   //1 1 0 1
                                   //0 0 0 1
                                   //-------
                                   //0 0 0 1
                                   //可以说明,2^1(1为13二进制的最后一位的权)在2^13里
                                   //故乘入
        res = res * res % mod;     //一个将底数与权值对应起来的操作,如在判定2^1在2^13里后,下一步要判断2^2
                                   //是否在2^13里,于是将底数从2^1变为2^2(2*2=2^2)
        b >>= 1;                   //右移一位,1101变为110,0对应权值为2
                                   //接下来的操作流程为
                                   //判断2^2是否在2^13里,因110&001=000,故2^2不在2^13里
                                   //将底数与权值对应,2^2变为2^4(2^2 * 2^2 = 2^4)
                                   //b右移一位,与底数对应
                                   //.....
    }
    return ans % mod;
}

int a, b;
int main()
{
    scanf("%d %d %d", &a, &b, &mod);
    int ans = _power(a, b);
    printf("%d^%d mod %d=%d\n", a, b, mod, ans);
    return 0;
}